function [zerosFinal, polesFinal, gainFinal]= shifter (Z, P, gainFinal, wn, approximationType , filterType, aa, ap, wa, wp, waMENOS, waMAS, wpMENOS, wpMAS, sliderK)
    
w_desn=0;


correccion = 0;

    H=gainFinal*tf(poly(Z),poly(P));
    
    if approximationType == 3
    wVector = logspace(log10(0.0001), log10(1), 1000);
    sliderK = 1-sliderK;
    else
    wVector = logspace(log10(1), log10(wn), 1000);  
    end

    
    [MAG] = bode(H, wVector);
    ATT = 1./(MAG(:,:));
    att = 20*log10(ATT);
    
    if approximationType ~= 3
    
        for index = 1: 1000
            if (w_desn == 0) && (att(index) >= (aa-0.001))
                w_desn = wVector(index);
                correccion=abs((wn-wVector(index)))*sliderK/wVector(index);
            end
        end
    
    else
        for index = 1: 1000
            if (w_desn == 0) && (att(index) >= (ap-0.001))
                w_desn = wVector(index);
                correccion=abs((wn-wVector(index)))*sliderK/wVector(index);
            end
        end
    end
        
    
    if approximationType == 3
        correccion = -1 * correccion;
    end
        
    
    
    if ~isempty(Z)
    zerosFinal=(Z*(1+correccion));
    else
        zerosFinal=[];
    end
    
    if ~isempty(P)
    polesFinal=(P*(1+correccion));
    else
        polesFinal=[];
    end



end